In a distributed-services environment, different operators may operate and control each of the multiple different services within the environment to perform a particular task. These services, however, may rely upon one another to achieve these tasks. For instance, a first service may make calls to second service and a third service (and potentially many more) within the environment when executing the task of the first service. As such, the first service is dependent upon the second and third services while still generally operating and controlling the task of the first service independently.
These dependencies create difficulties in creating a consistent testing environment for the distributed services. In the above example, the first service may make calls into the second and third services when the first service is under test. However, in order to effectively test the first service to determine how different changes affect the first service, the first service may need to receive consistent replies from the second and third services when making consistent calls or requests to these services. That is, the first service may desire to receive a same reply from the second service in response to sending a same request to the second service, and the first service may desire the same behavior from the third service.
However, because the second and third services may themselves change over time, the replies sent to the first service may vary and, hence, cannot be relied upon to provide a stable output. As such, the first service may actually need to contact the different entities controlling the second and third services in order to ask these entities to “stage” a consistent reply. That is, the first service may need to inform the controlling entities that the first service is under test and, hence, that the first service would like to receive a consistent reply to a same request for a certain amount of time.
Unfortunately, this scenario presents several disadvantages. First, the entity controlling the first service must contact the entities controlling the second and third services, which themselves must spend time staging the replies. This overhead proves costly in terms of time and resources. Second, if the first service chooses to run a same test after a certain amount of time (e.g., one week after running an initial test), the first service might not receive the needed consistent reply. That is, the second or third service may no longer provide the consistent reply and, as such, the first service becomes unable to replicate the testing conditions needed for a consistent testing environment.